// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.22.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Google Cloud Dataproc API Version v1alpha1
 *
 * \section ApiInfo API Version Information
 *    <table>
 *      <tr><th>API
 *          <td><a href='https://cloud.google.com/dataproc/'>Google Cloud Dataproc API</a>
 *      <tr><th>API Version<td>v1alpha1
 *      <tr><th>API Rev<td>20170315 (804)
 *      <tr><th>API Docs
 *          <td><a href='https://cloud.google.com/dataproc/'>
 *              https://cloud.google.com/dataproc/</a>
 *      <tr><th>Discovery Name<td>dataproc
 *    </table>
 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Google Cloud Dataproc API can be found at
 * <a href='https://cloud.google.com/dataproc/'>https://cloud.google.com/dataproc/</a>.
 *
 * For more information about the Google APIs Client Library for .NET, see
 * <a href='https://developers.google.com/api-client-library/dotnet/get_started'>
 * https://developers.google.com/api-client-library/dotnet/get_started</a>
 */

namespace Google.Apis.Dataproc.v1alpha1
{
    /// <summary>The Dataproc Service.</summary>
    public class DataprocService : Google.Apis.Services.BaseClientService
    {
        /// <summary>The API version.</summary>
        public const string Version = "v1alpha1";

        /// <summary>The discovery version used to generate this service.</summary>
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// <summary>Constructs a new service.</summary>
        public DataprocService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// <summary>Constructs a new service.</summary>
        /// <param name="initializer">The service initializer.</param>
        public DataprocService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            operations = new OperationsResource(this);
            projects = new ProjectsResource(this);
        }

        /// <summary>Gets the service supported features.</summary>
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// <summary>Gets the service name.</summary>
        public override string Name
        {
            get { return "dataproc"; }
        }

        /// <summary>Gets the service base URI.</summary>
        public override string BaseUri
        {
            get { return "https://dataproc.googleapis.com/"; }
        }

        /// <summary>Gets the service base path.</summary>
        public override string BasePath
        {
            get { return ""; }
        }

        /// <summary>Available OAuth 2.0 scopes for use with the Google Cloud Dataproc API.</summary>
        public class Scope
        {
            /// <summary>View and manage your data across Google Cloud Platform services</summary>
            public static string CloudPlatform = "https://www.googleapis.com/auth/cloud-platform";

        }



        private readonly OperationsResource operations;

        /// <summary>Gets the Operations resource.</summary>
        public virtual OperationsResource Operations
        {
            get { return operations; }
        }

        private readonly ProjectsResource projects;

        /// <summary>Gets the Projects resource.</summary>
        public virtual ProjectsResource Projects
        {
            get { return projects; }
        }
    }

    ///<summary>A base abstract class for Dataproc requests.</summary>
    public abstract class DataprocBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///<summary>Constructs a new DataprocBaseServiceRequest instance.</summary>
        protected DataprocBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// <summary>V1 error format.</summary>
        [Google.Apis.Util.RequestParameterAttribute("$.xgafv", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<XgafvEnum> Xgafv { get; set; }

        /// <summary>V1 error format.</summary>
        public enum XgafvEnum
        {
            /// <summary>v1 error format</summary>
            [Google.Apis.Util.StringValueAttribute("1")]
            Value1,
            /// <summary>v2 error format</summary>
            [Google.Apis.Util.StringValueAttribute("2")]
            Value2,
        }

        /// <summary>OAuth access token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("access_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string AccessToken { get; set; }

        /// <summary>Data format for response.</summary>
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// <summary>Data format for response.</summary>
        public enum AltEnum
        {
            /// <summary>Responses with Content-Type of application/json</summary>
            [Google.Apis.Util.StringValueAttribute("json")]
            Json,
            /// <summary>Media download with context-dependent Content-Type</summary>
            [Google.Apis.Util.StringValueAttribute("media")]
            Media,
            /// <summary>Responses with Content-Type of application/x-protobuf</summary>
            [Google.Apis.Util.StringValueAttribute("proto")]
            Proto,
        }

        /// <summary>OAuth bearer token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("bearer_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string BearerToken { get; set; }

        /// <summary>JSONP</summary>
        [Google.Apis.Util.RequestParameterAttribute("callback", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Callback { get; set; }

        /// <summary>Selector specifying which fields to include in a partial response.</summary>
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// <summary>OAuth 2.0 token for the current user.</summary>
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// <summary>Pretty-print response.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("pp", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> Pp { get; set; }

        /// <summary>Returns response with indentations and line breaks.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters.</summary>
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// <summary>Legacy upload protocol for media (e.g. "media", "multipart").</summary>
        [Google.Apis.Util.RequestParameterAttribute("uploadType", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UploadType { get; set; }

        /// <summary>Upload protocol for media (e.g. "raw", "multipart").</summary>
        [Google.Apis.Util.RequestParameterAttribute("upload_protocol", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UploadProtocol { get; set; }

        /// <summary>Initializes Dataproc parameter list.</summary>
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "$.xgafv", new Google.Apis.Discovery.Parameter
                {
                    Name = "$.xgafv",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "access_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "access_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "bearer_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "bearer_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "callback", new Google.Apis.Discovery.Parameter
                {
                    Name = "callback",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "pp", new Google.Apis.Discovery.Parameter
                {
                    Name = "pp",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "uploadType", new Google.Apis.Discovery.Parameter
                {
                    Name = "uploadType",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "upload_protocol", new Google.Apis.Discovery.Parameter
                {
                    Name = "upload_protocol",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// <summary>The "operations" collection of methods.</summary>
    public class OperationsResource
    {
        private const string Resource = "operations";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public OperationsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Starts asynchronous cancellation on a long-running operation. The server makes a best effort to
        /// cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns
        /// google.rpc.Code.UNIMPLEMENTED. Clients may use Operations.GetOperation or other methods to check whether the
        /// cancellation succeeded or the operation completed despite cancellation.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="name">The name of the operation resource to be cancelled.</param>
        public virtual CancelRequest Cancel(Google.Apis.Dataproc.v1alpha1.Data.CancelOperationRequest body, string name)
        {
            return new CancelRequest(service, body, name);
        }

        /// <summary>Starts asynchronous cancellation on a long-running operation. The server makes a best effort to
        /// cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns
        /// google.rpc.Code.UNIMPLEMENTED. Clients may use Operations.GetOperation or other methods to check whether the
        /// cancellation succeeded or the operation completed despite cancellation.</summary>
        public class CancelRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Empty>
        {
            /// <summary>Constructs a new Cancel request.</summary>
            public CancelRequest(Google.Apis.Services.IClientService service, Google.Apis.Dataproc.v1alpha1.Data.CancelOperationRequest body, string name)
                : base(service)
            {
                Name = name;
                Body = body;
                InitParameters();
            }


            /// <summary>The name of the operation resource to be cancelled.</summary>
            [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Name { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Dataproc.v1alpha1.Data.CancelOperationRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "cancel"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "v1alpha1/{+name}:cancel"; }
            }

            /// <summary>Initializes Cancel parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^operations/.+$",
                    });
            }

        }

        /// <summary>Deletes a long-running operation. It indicates the client is no longer interested in the operation
        /// result. It does not cancel the operation.</summary>
        /// <param name="name">The name of the operation resource to be deleted.</param>
        public virtual DeleteRequest Delete(string name)
        {
            return new DeleteRequest(service, name);
        }

        /// <summary>Deletes a long-running operation. It indicates the client is no longer interested in the operation
        /// result. It does not cancel the operation.</summary>
        public class DeleteRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Empty>
        {
            /// <summary>Constructs a new Delete request.</summary>
            public DeleteRequest(Google.Apis.Services.IClientService service, string name)
                : base(service)
            {
                Name = name;
                InitParameters();
            }


            /// <summary>The name of the operation resource to be deleted.</summary>
            [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Name { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "delete"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "v1alpha1/{+name}"; }
            }

            /// <summary>Initializes Delete parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^operations/.+$",
                    });
            }

        }

        /// <summary>Gets the latest state of a long-running operation. Clients may use this method to poll the
        /// operation result at intervals as recommended by the API service.</summary>
        /// <param name="name">The operation resource name.</param>
        public virtual GetRequest Get(string name)
        {
            return new GetRequest(service, name);
        }

        /// <summary>Gets the latest state of a long-running operation. Clients may use this method to poll the
        /// operation result at intervals as recommended by the API service.</summary>
        public class GetRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Operation>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, string name)
                : base(service)
            {
                Name = name;
                InitParameters();
            }


            /// <summary>The operation resource name.</summary>
            [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Name { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "v1alpha1/{+name}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^operations/.+$",
                    });
            }

        }

        /// <summary>Lists operations that match the specified filter in the request. If the server doesn't support this
        /// method, it returns google.rpc.Code.UNIMPLEMENTED.</summary>
        /// <param name="name">The operation collection name.</param>
        public virtual ListRequest List(string name)
        {
            return new ListRequest(service, name);
        }

        /// <summary>Lists operations that match the specified filter in the request. If the server doesn't support this
        /// method, it returns google.rpc.Code.UNIMPLEMENTED.</summary>
        public class ListRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.ListOperationsResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, string name)
                : base(service)
            {
                Name = name;
                InitParameters();
            }


            /// <summary>The operation collection name.</summary>
            [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Name { get; private set; }

            /// <summary>Required A JSON object that contains filters for the list operation, in the format
            /// {"key1":"value1","key2":"value2", ..., }. Possible keys include project_id, cluster_name, and
            /// operation_state_matcher.If project_id is set, requests the list of operations that belong to the
            /// specified Google Cloud Platform project ID. This key is required.If cluster_name is set, requests the
            /// list of operations that were submitted to the specified cluster name. This key is optional.If
            /// operation_state_matcher is set, requests the list of operations that match one of the following status
            /// options: ALL, ACTIVE, or NON_ACTIVE.</summary>
            [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string Filter { get; set; }

            /// <summary>The standard List page token.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }

            /// <summary>The standard List page size.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<int> PageSize { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "v1alpha1/{+name}"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^operations$",
                    });
                RequestParameters.Add(
                    "filter", new Google.Apis.Discovery.Parameter
                    {
                        Name = "filter",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageSize", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageSize",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "projects" collection of methods.</summary>
    public class ProjectsResource
    {
        private const string Resource = "projects";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ProjectsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;
            regions = new RegionsResource(service);

        }

        private readonly RegionsResource regions;

        /// <summary>Gets the Regions resource.</summary>
        public virtual RegionsResource Regions
        {
            get { return regions; }
        }

        /// <summary>The "regions" collection of methods.</summary>
        public class RegionsResource
        {
            private const string Resource = "regions";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public RegionsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;
                clusters = new ClustersResource(service);
                jobs = new JobsResource(service);

            }

            private readonly ClustersResource clusters;

            /// <summary>Gets the Clusters resource.</summary>
            public virtual ClustersResource Clusters
            {
                get { return clusters; }
            }

            /// <summary>The "clusters" collection of methods.</summary>
            public class ClustersResource
            {
                private const string Resource = "clusters";

                /// <summary>The service which this resource belongs to.</summary>
                private readonly Google.Apis.Services.IClientService service;

                /// <summary>Constructs a new resource.</summary>
                public ClustersResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;

                }


                /// <summary>Request to create a cluster in a project.</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the cluster belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the request.</param>
                public virtual CreateRequest Create(Google.Apis.Dataproc.v1alpha1.Data.Cluster body, string projectId, string region)
                {
                    return new CreateRequest(service, body, projectId, region);
                }

                /// <summary>Request to create a cluster in a project.</summary>
                public class CreateRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Operation>
                {
                    /// <summary>Constructs a new Create request.</summary>
                    public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.Dataproc.v1alpha1.Data.Cluster body, string projectId, string region)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the cluster belongs
                    /// to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.Dataproc.v1alpha1.Data.Cluster Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "create"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/clusters"; }
                    }

                    /// <summary>Initializes Create parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Request to delete a cluster in a project.</summary>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the cluster belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the
                /// request.</param>
                /// <param name="clusterName">Required The cluster name.</param>
                public virtual DeleteRequest Delete(string projectId, string region, string clusterName)
                {
                    return new DeleteRequest(service, projectId, region, clusterName);
                }

                /// <summary>Request to delete a cluster in a project.</summary>
                public class DeleteRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Operation>
                {
                    /// <summary>Constructs a new Delete request.</summary>
                    public DeleteRequest(Google.Apis.Services.IClientService service, string projectId, string region, string clusterName)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        ClusterName = clusterName;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the cluster belongs
                    /// to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }

                    /// <summary>Required The cluster name.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("clusterName", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ClusterName { get; private set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "delete"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "DELETE"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/clusters/{clusterName}"; }
                    }

                    /// <summary>Initializes Delete parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "clusterName", new Google.Apis.Discovery.Parameter
                            {
                                Name = "clusterName",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Request to get the resource representation for a cluster in a project.</summary>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the cluster belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the
                /// request.</param>
                /// <param name="clusterName">Required The cluster name.</param>
                public virtual GetRequest Get(string projectId, string region, string clusterName)
                {
                    return new GetRequest(service, projectId, region, clusterName);
                }

                /// <summary>Request to get the resource representation for a cluster in a project.</summary>
                public class GetRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Cluster>
                {
                    /// <summary>Constructs a new Get request.</summary>
                    public GetRequest(Google.Apis.Services.IClientService service, string projectId, string region, string clusterName)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        ClusterName = clusterName;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the cluster belongs
                    /// to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }

                    /// <summary>Required The cluster name.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("clusterName", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ClusterName { get; private set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "get"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/clusters/{clusterName}"; }
                    }

                    /// <summary>Initializes Get parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "clusterName", new Google.Apis.Discovery.Parameter
                            {
                                Name = "clusterName",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Request a list of all regions/{region}/clusters in a project.</summary>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the cluster belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the request.</param>
                public virtual ListRequest List(string projectId, string region)
                {
                    return new ListRequest(service, projectId, region);
                }

                /// <summary>Request a list of all regions/{region}/clusters in a project.</summary>
                public class ListRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.ListClustersResponse>
                {
                    /// <summary>Constructs a new List request.</summary>
                    public ListRequest(Google.Apis.Services.IClientService service, string projectId, string region)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the cluster belongs
                    /// to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }

                    /// <summary>Optional A filter constraining which clusters to list. Valid filters contain label
                    /// terms such as: labels.key1 = val1 AND (-labels.k2 = val2 OR labels.k3 = val3)</summary>
                    [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string Filter { get; set; }

                    /// <summary>The standard List page token.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string PageToken { get; set; }

                    /// <summary>The standard List page size.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<int> PageSize { get; set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "list"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/clusters"; }
                    }

                    /// <summary>Initializes List parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "filter", new Google.Apis.Discovery.Parameter
                            {
                                Name = "filter",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageToken", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageToken",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageSize", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageSize",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Request to update a cluster in a project.</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project the cluster belongs to.</param>
                ///
                /// <param name="region">Required The Dataproc region in which to handle the request.</param>
                /// <param
                /// name="clusterName">Required The cluster name.</param>
                public virtual PatchRequest Patch(Google.Apis.Dataproc.v1alpha1.Data.Cluster body, string projectId, string region, string clusterName)
                {
                    return new PatchRequest(service, body, projectId, region, clusterName);
                }

                /// <summary>Request to update a cluster in a project.</summary>
                public class PatchRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Operation>
                {
                    /// <summary>Constructs a new Patch request.</summary>
                    public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Dataproc.v1alpha1.Data.Cluster body, string projectId, string region, string clusterName)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        ClusterName = clusterName;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project the cluster belongs to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }

                    /// <summary>Required The cluster name.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("clusterName", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ClusterName { get; private set; }

                    /// <summary>Required Specifies the path, relative to Cluster, of the field to update. For example,
                    /// to change the number of workers in a cluster to 5, the update_mask parameter would be specified
                    /// as "configuration.worker_configuration.num_instances," and the PATCH request body would specify
                    /// the new value, as follows: { "configuration":{ "workerConfiguration":{ "numInstances":"5" } } }
                    /// Note: Currently, configuration.worker_configuration.num_instances is the only field that can be
                    /// updated.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual object UpdateMask { get; set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.Dataproc.v1alpha1.Data.Cluster Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "patch"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "PATCH"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/clusters/{clusterName}"; }
                    }

                    /// <summary>Initializes Patch parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "clusterName", new Google.Apis.Discovery.Parameter
                            {
                                Name = "clusterName",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "updateMask", new Google.Apis.Discovery.Parameter
                            {
                                Name = "updateMask",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }
            }
            private readonly JobsResource jobs;

            /// <summary>Gets the Jobs resource.</summary>
            public virtual JobsResource Jobs
            {
                get { return jobs; }
            }

            /// <summary>The "jobs" collection of methods.</summary>
            public class JobsResource
            {
                private const string Resource = "jobs";

                /// <summary>The service which this resource belongs to.</summary>
                private readonly Google.Apis.Services.IClientService service;

                /// <summary>Constructs a new resource.</summary>
                public JobsResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;

                }


                /// <summary>Starts a job cancellation request. To access the job resource after cancellation, call
                /// regions/{region}/jobs:list or regions/{region}/jobs:get.</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the job belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the
                /// request.</param>
                /// <param name="jobId">Required The job ID.</param>
                public virtual CancelRequest Cancel(Google.Apis.Dataproc.v1alpha1.Data.CancelJobRequest body, string projectId, string region, string jobId)
                {
                    return new CancelRequest(service, body, projectId, region, jobId);
                }

                /// <summary>Starts a job cancellation request. To access the job resource after cancellation, call
                /// regions/{region}/jobs:list or regions/{region}/jobs:get.</summary>
                public class CancelRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Job>
                {
                    /// <summary>Constructs a new Cancel request.</summary>
                    public CancelRequest(Google.Apis.Services.IClientService service, Google.Apis.Dataproc.v1alpha1.Data.CancelJobRequest body, string projectId, string region, string jobId)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        JobId = jobId;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the job belongs to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }

                    /// <summary>Required The job ID.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("jobId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string JobId { get; private set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.Dataproc.v1alpha1.Data.CancelJobRequest Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "cancel"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel"; }
                    }

                    /// <summary>Initializes Cancel parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "jobId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "jobId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Deletes the job from the project. If the job is active, the delete fails, and the response
                /// returns FAILED_PRECONDITION.</summary>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the job belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the
                /// request.</param>
                /// <param name="jobId">Required The job ID.</param>
                public virtual DeleteRequest Delete(string projectId, string region, string jobId)
                {
                    return new DeleteRequest(service, projectId, region, jobId);
                }

                /// <summary>Deletes the job from the project. If the job is active, the delete fails, and the response
                /// returns FAILED_PRECONDITION.</summary>
                public class DeleteRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Job>
                {
                    /// <summary>Constructs a new Delete request.</summary>
                    public DeleteRequest(Google.Apis.Services.IClientService service, string projectId, string region, string jobId)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        JobId = jobId;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the job belongs to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }

                    /// <summary>Required The job ID.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("jobId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string JobId { get; private set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "delete"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "DELETE"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/jobs/{jobId}"; }
                    }

                    /// <summary>Initializes Delete parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "jobId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "jobId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Gets the resource representation for a job in a project.</summary>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the job belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the
                /// request.</param>
                /// <param name="jobId">Required The job ID.</param>
                public virtual GetRequest Get(string projectId, string region, string jobId)
                {
                    return new GetRequest(service, projectId, region, jobId);
                }

                /// <summary>Gets the resource representation for a job in a project.</summary>
                public class GetRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Job>
                {
                    /// <summary>Constructs a new Get request.</summary>
                    public GetRequest(Google.Apis.Services.IClientService service, string projectId, string region, string jobId)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        JobId = jobId;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the job belongs to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }

                    /// <summary>Required The job ID.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("jobId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string JobId { get; private set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "get"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/jobs/{jobId}"; }
                    }

                    /// <summary>Initializes Get parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "jobId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "jobId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Lists regions/{region}/jobs in a project.</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the job belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the request.</param>
                public virtual ListRequest List(Google.Apis.Dataproc.v1alpha1.Data.ListJobsRequest body, string projectId, string region)
                {
                    return new ListRequest(service, body, projectId, region);
                }

                /// <summary>Lists regions/{region}/jobs in a project.</summary>
                public class ListRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.ListJobsResponse>
                {
                    /// <summary>Constructs a new List request.</summary>
                    public ListRequest(Google.Apis.Services.IClientService service, Google.Apis.Dataproc.v1alpha1.Data.ListJobsRequest body, string projectId, string region)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the job belongs to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.Dataproc.v1alpha1.Data.ListJobsRequest Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "list"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/jobs:list"; }
                    }

                    /// <summary>Initializes List parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Updates a job in a project.</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the job belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the
                /// request.</param>
                /// <param name="jobId">Required The job ID.</param>
                public virtual PatchRequest Patch(Google.Apis.Dataproc.v1alpha1.Data.Job body, string projectId, string region, string jobId)
                {
                    return new PatchRequest(service, body, projectId, region, jobId);
                }

                /// <summary>Updates a job in a project.</summary>
                public class PatchRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Job>
                {
                    /// <summary>Constructs a new Patch request.</summary>
                    public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Dataproc.v1alpha1.Data.Job body, string projectId, string region, string jobId)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        JobId = jobId;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the job belongs to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }

                    /// <summary>Required The job ID.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("jobId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string JobId { get; private set; }

                    /// <summary>Required Specifies the path, relative to Job, of the field to update. For example, to
                    /// update the labels of a Job the update_mask parameter would be specified as labels, and the PATCH
                    /// request body would specify the new value. Note: Currently, labels is the only field that can be
                    /// updated.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual object UpdateMask { get; set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.Dataproc.v1alpha1.Data.Job Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "patch"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "PATCH"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/jobs/{jobId}"; }
                    }

                    /// <summary>Initializes Patch parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "jobId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "jobId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "updateMask", new Google.Apis.Discovery.Parameter
                            {
                                Name = "updateMask",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Submits a job to a cluster.</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="projectId">Required The ID of the Google Cloud Platform project that the job belongs
                /// to.</param>
                /// <param name="region">Required The Dataproc region in which to handle the request.</param>
                public virtual SubmitRequest Submit(Google.Apis.Dataproc.v1alpha1.Data.SubmitJobRequest body, string projectId, string region)
                {
                    return new SubmitRequest(service, body, projectId, region);
                }

                /// <summary>Submits a job to a cluster.</summary>
                public class SubmitRequest : DataprocBaseServiceRequest<Google.Apis.Dataproc.v1alpha1.Data.Job>
                {
                    /// <summary>Constructs a new Submit request.</summary>
                    public SubmitRequest(Google.Apis.Services.IClientService service, Google.Apis.Dataproc.v1alpha1.Data.SubmitJobRequest body, string projectId, string region)
                        : base(service)
                    {
                        ProjectId = projectId;
                        Region = region;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>Required The ID of the Google Cloud Platform project that the job belongs to.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("projectId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ProjectId { get; private set; }

                    /// <summary>Required The Dataproc region in which to handle the request.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Region { get; private set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.Dataproc.v1alpha1.Data.SubmitJobRequest Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "submit"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1alpha1/projects/{projectId}/regions/{region}/jobs:submit"; }
                    }

                    /// <summary>Initializes Submit parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "projectId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "projectId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "region", new Google.Apis.Discovery.Parameter
                            {
                                Name = "region",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }
            }
        }
    }
}

namespace Google.Apis.Dataproc.v1alpha1.Data
{    

    /// <summary>Specifies the type and number of accelerator cards attached to the instances of an instance group (see
    /// GPUs on Compute Engine).</summary>
    public class AcceleratorConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The number of the accelerator cards of this type exposed to this instance.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("acceleratorCount")]
        public virtual System.Nullable<int> AcceleratorCount { get; set; } 

        /// <summary>Full or partial URI of the accelerator type resource to expose to this instance. See Google Compute
        /// Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("acceleratorTypeUri")]
        public virtual string AcceleratorTypeUri { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A request to cancel a job.</summary>
    public class CancelJobRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The request message for Operations.CancelOperation.</summary>
    public class CancelOperationRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Describes the identifying information, configuration, and status of a cluster of Google Compute Engine
    /// instances.</summary>
    public class Cluster : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Required The cluster name. Cluster names within a project must be unique. Names from deleted
        /// clusters can be reused.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterName")]
        public virtual string ClusterName { get; set; } 

        /// <summary>Output-only A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when
        /// it creates the cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterUuid")]
        public virtual string ClusterUuid { get; set; } 

        /// <summary>Required The cluster configuration. It may differ from a user's initial configuration due to Cloud
        /// Dataproc setting of default values and updating clusters.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("configuration")]
        public virtual ClusterConfiguration Configuration { get; set; } 

        /// <summary>Output-only The timestamp of cluster creation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; } 

        /// <summary>Optional The labels to associate with this cluster.Label keys must be between 1 and 63 characters
        /// long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62}Label values must be
        /// between 1 and 63 characters long, and must conform to the following PCRE regular expression:
        /// \p{Ll}\p{Lo}\p{N}_-{0,63}No more than 64 labels can be associated with a given cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IDictionary<string,string> Labels { get; set; } 

        /// <summary>Contains cluster daemon metrics such as HDFS and YARN stats.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("metrics")]
        public virtual ClusterMetrics Metrics { get; set; } 

        /// <summary>Required The Google Cloud Platform project ID that the cluster belongs to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; } 

        /// <summary>Output-only Cluster status.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual ClusterStatus Status { get; set; } 

        /// <summary>Output-only Previous cluster statuses.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("statusHistory")]
        public virtual System.Collections.Generic.IList<ClusterStatus> StatusHistory { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The cluster configuration.</summary>
    public class ClusterConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional A Google Cloud Storage staging bucket used for sharing generated SSH keys and
        /// configuration. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud
        /// Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine
        /// zone where your cluster is deployed, then it will create and manage this project-level, per-location bucket
        /// for you.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("configurationBucket")]
        public virtual string ConfigurationBucket { get; set; } 

        /// <summary>Optional The shared Google Compute Engine configuration settings for all instances in a
        /// cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("gceClusterConfiguration")]
        public virtual GceClusterConfiguration GceClusterConfiguration { get; set; } 

        /// <summary>Deprecated The Google Compute Engine configuration settings for cluster resources.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("gceConfiguration")]
        public virtual GceConfiguration GceConfiguration { get; set; } 

        /// <summary>Optional Commands to execute on each node after configuration is completed. By default, executables
        /// are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master
        /// or worker node, as shown below: ROLE=$(/usr/share/google/get_metadata_value attributes/role) if [[ "${ROLE}"
        /// == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi </summary>
        [Newtonsoft.Json.JsonPropertyAttribute("initializationActions")]
        public virtual System.Collections.Generic.IList<NodeInitializationAction> InitializationActions { get; set; } 

        /// <summary>Optional The Google Compute Engine configuration settings for the master instance in a
        /// cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("masterConfiguration")]
        public virtual InstanceGroupConfiguration MasterConfiguration { get; set; } 

        /// <summary>Deprecated The configuration settings of master node disk options.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("masterDiskConfiguration")]
        public virtual DiskConfiguration MasterDiskConfiguration { get; set; } 

        /// <summary>Deprecated The Master's hostname. Dataproc derives the name from cluster_name if not set by user
        /// (recommended practice is to let Dataproc derive the name). Derived master name example: hadoop-m.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("masterName")]
        public virtual string MasterName { get; set; } 

        /// <summary>Deprecated The number of worker nodes in the cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("numWorkers")]
        public virtual System.Nullable<int> NumWorkers { get; set; } 

        /// <summary>Optional The Google Compute Engine configuration settings for additional worker instances in a
        /// cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("secondaryWorkerConfiguration")]
        public virtual InstanceGroupConfiguration SecondaryWorkerConfiguration { get; set; } 

        /// <summary>Optional The configuration settings for software inside the cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("softwareConfiguration")]
        public virtual SoftwareConfiguration SoftwareConfiguration { get; set; } 

        /// <summary>Optional The Google Compute Engine configuration settings for worker instances in a
        /// cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("workerConfiguration")]
        public virtual InstanceGroupConfiguration WorkerConfiguration { get; set; } 

        /// <summary>Deprecated The configuration settings of worker node disk options.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("workerDiskConfiguration")]
        public virtual DiskConfiguration WorkerDiskConfiguration { get; set; } 

        /// <summary>Deprecated The list of worker node names. Dataproc derives the names from cluster_name and
        /// num_workers if not set by user (recommended practice is to let Dataproc derive the name). Derived worker
        /// node name example: hadoop-w-0.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("workers")]
        public virtual System.Collections.Generic.IList<string> Workers { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Contains cluster daemon metrics, such as HDFS and YARN stats.</summary>
    public class ClusterMetrics : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The HDFS metrics.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("hdfsMetrics")]
        public virtual System.Collections.Generic.IDictionary<string,System.Nullable<long>> HdfsMetrics { get; set; } 

        /// <summary>The YARN metrics.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("yarnMetrics")]
        public virtual System.Collections.Generic.IDictionary<string,System.Nullable<long>> YarnMetrics { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Metadata describing the operation.</summary>
    public class ClusterOperationMetadata : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Output-only Name of the cluster for the operation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterName")]
        public virtual string ClusterName { get; set; } 

        /// <summary>Output-only Cluster UUID for the operation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterUuid")]
        public virtual string ClusterUuid { get; set; } 

        /// <summary>Output-only Short description of operation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; } 

        /// <summary>Output-only Labels associated with the operation</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IDictionary<string,string> Labels { get; set; } 

        /// <summary>Output-only The operation type.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationType")]
        public virtual string OperationType { get; set; } 

        /// <summary>Output-only Current operation status.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual ClusterOperationStatus Status { get; set; } 

        /// <summary>Output-only The previous operation status.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("statusHistory")]
        public virtual System.Collections.Generic.IList<ClusterOperationStatus> StatusHistory { get; set; } 

        /// <summary>Output-only Errors encountered during operation execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("warnings")]
        public virtual System.Collections.Generic.IList<string> Warnings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The status of the operation.</summary>
    public class ClusterOperationStatus : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Output-onlyA message containing any operation metadata details.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual string Details { get; set; } 

        /// <summary>Output-only A message containing the detailed operation state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("innerState")]
        public virtual string InnerState { get; set; } 

        /// <summary>Output-only A message containing the operation state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; } 

        /// <summary>Output-only The time this state was entered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stateStartTime")]
        public virtual object StateStartTime { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The status of a cluster and its instances.</summary>
    public class ClusterStatus : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional details of cluster's state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("detail")]
        public virtual string Detail { get; set; } 

        /// <summary>The cluster's state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; } 

        /// <summary>Time when this state was entered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stateStartTime")]
        public virtual object StateStartTime { get; set; } 

        /// <summary>Output-only Additional state information that includes status reported by the agent.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("substate")]
        public virtual string Substate { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The location where output from diagnostic command can be found.</summary>
    public class DiagnoseClusterOutputLocation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Output-only The Google Cloud Storage URI of the diagnostic output. This will be a plain text file
        /// with summary of collected diagnostics.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("outputUri")]
        public virtual string OutputUri { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The location of diagnostic output.</summary>
    public class DiagnoseClusterResults : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Output-only The Google Cloud Storage URI of the diagnostic output. The output report is a plain
        /// text file with a summary of collected diagnostics.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("outputUri")]
        public virtual string OutputUri { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Specifies the configuration of disk options for a group of VM instances.</summary>
    public class DiskConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional Size in GB of the boot disk (default is 500GB).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("bootDiskSizeGb")]
        public virtual System.Nullable<int> BootDiskSizeGb { get; set; } 

        /// <summary>Optional Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot
        /// disk is used to store runtime logs, and HDFS data. If one or more SSDs are attached, this runtime bulk data
        /// is spread across them, and the boot disk contains only basic configuration and installed binaries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("numLocalSsds")]
        public virtual System.Nullable<int> NumLocalSsds { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A
    /// typical example is to use it as the request or the response type of an API method. For instance: service Foo {
    /// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for Empty is empty
    /// JSON object {}.</summary>
    public class Empty : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Common configuration settings for resources of Google Compute Engine cluster instances, applicable to
    /// all instances in the cluster.</summary>
    public class GceClusterConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>If true, all instances in the cluser will only have internal IP addresses. By default, clusters are
        /// not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each
        /// instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster
        /// dependencies must be configured to be accessible without external IP addresses.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("internalIpOnly")]
        public virtual System.Nullable<bool> InternalIpOnly { get; set; } 

        /// <summary>The Google Compute Engine metadata entries to add to all instances.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("metadata")]
        public virtual System.Collections.Generic.IDictionary<string,string> Metadata { get; set; } 

        /// <summary>The Google Compute Engine network to be used for machine communications. Cannot be specified with
        /// subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project
        /// is used, if it exists. Cannot be a "Custom Subnet Network" (see
        /// https://cloud.google.com/compute/docs/subnetworks for more information). Example:
        /// compute.googleapis.com/projects/[project_id]/regions/global/default.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("networkUri")]
        public virtual string NetworkUri { get; set; } 

        /// <summary>Optional The service account of the instances. Defaults to the default Google Compute Engine
        /// service account. Custom service accounts need permissions equivalent to the folloing IAM roles:
        /// roles/logging.logWriter roles/storage.objectAdmin(see https://cloud.google.com/compute/docs/access/service-
        /// accounts#custom_service_accounts for more information). Example:
        /// [account_id]@[project_id].iam.gserviceaccount.com</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("serviceAccount")]
        public virtual string ServiceAccount { get; set; } 

        /// <summary>The service account scopes included in Google Compute Engine instances. Must include
        /// devstorage.full_control to enable the Google Cloud Storage connector. Example "auth.googleapis.com/compute"
        /// and "auth.googleapis.com/devstorage.full_control".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("serviceAccountScopes")]
        public virtual System.Collections.Generic.IList<string> ServiceAccountScopes { get; set; } 

        /// <summary>The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified
        /// with network_uri. Example: compute.googleapis.com/projects/[project_id]/regions/us-east1/sub0.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("subnetworkUri")]
        public virtual string SubnetworkUri { get; set; } 

        /// <summary>The Google Compute Engine tags to add to all instances.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("tags")]
        public virtual System.Collections.Generic.IList<string> Tags { get; set; } 

        /// <summary>Required The zone where the Google Compute Engine cluster will be located. Example:
        /// "compute.googleapis.com/projects/project_id /zones/us-east1-a".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("zoneUri")]
        public virtual string ZoneUri { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Deprecated Common configuration settings for resources of Google Compute Engine cluster instances,
    /// applicable to all instances in the cluster.</summary>
    public class GceConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Deprecated The Google Compute Engine image resource used for cluster instances. Example:
        /// "compute.googleapis.com/projects/debian-cloud /global/images/backports-debian-7-wheezy-v20140904".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("imageUri")]
        public virtual string ImageUri { get; set; } 

        /// <summary>Deprecated The Google Compute Engine machine type used for cluster instances. Example:
        /// "compute.googleapis.com/projects/project_id /zones/us-east1-a/machineTypes/n1-standard-2".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("machineTypeUri")]
        public virtual string MachineTypeUri { get; set; } 

        /// <summary>Deprecated The Google Compute Engine network to be used for machine communications. Inbound SSH
        /// connections are necessary to complete cluster configuration. Example
        /// "compute.googleapis.com/projects/project_id /zones/us-east1-a/default".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("networkUri")]
        public virtual string NetworkUri { get; set; } 

        /// <summary>Deprecated The service account scopes included in Google Compute Engine instances. Must include
        /// devstorage.full_control to enable the Google Cloud Storage connector. Example "auth.googleapis.com/compute"
        /// and "auth.googleapis.com/devstorage.full_control".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("serviceAccountScopes")]
        public virtual System.Collections.Generic.IList<string> ServiceAccountScopes { get; set; } 

        /// <summary>Deprecated The zone where the Google Compute Engine cluster will be located. Example:
        /// "compute.googleapis.com/projects/project_id /zones/us-east1-a".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("zoneUri")]
        public virtual string ZoneUri { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Cloud Dataproc job for running Hadoop MapReduce jobs on YARN.</summary>
    public class HadoopJob : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and
        /// tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("archiveUris")]
        public virtual System.Collections.Generic.IList<string> ArchiveUris { get; set; } 

        /// <summary>Optional The arguments to pass to the driver. Do not include arguments, such as -libjars or
        /// -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job
        /// submission.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("args")]
        public virtual System.Collections.Generic.IList<string> Args { get; set; } 

        /// <summary>Optional HCFS URIs of files to be copied to the working directory of Hadoop drivers and distributed
        /// tasks. Useful for naively parallel tasks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileUris")]
        public virtual System.Collections.Generic.IList<string> FileUris { get; set; } 

        /// <summary>Optional Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jarFileUris")]
        public virtual System.Collections.Generic.IList<string> JarFileUris { get; set; } 

        /// <summary>Optional The runtime log configuration for job execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("loggingConfiguration")]
        public virtual LoggingConfiguration LoggingConfiguration { get; set; } 

        /// <summary>The name of the driver's main class. The jar file containing the class must be in the default
        /// CLASSPATH or specified in jar_file_uris.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mainClass")]
        public virtual string MainClass { get; set; } 

        /// <summary>The Hadoop Compatible Filesystem (HCFS) URI of the jar file containing the main class. Examples:
        /// gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar  hdfs:/tmp/test-samples/custom-
        /// wordcount.jar  file:home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mainJarFileUri")]
        public virtual string MainJarFileUri { get; set; } 

        /// <summary>Optional A mapping of property names to values, used to configure Hadoop. Properties that conflict
        /// with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop
        /// /conf-site and classes in user code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("properties")]
        public virtual System.Collections.Generic.IDictionary<string,string> Properties { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Cloud Dataproc job for running Hive queries on YARN.</summary>
    public class HiveJob : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional Whether to continue executing queries if a query fails. The default value is false.
        /// Setting to true can be useful when executing independent parallel queries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("continueOnFailure")]
        public virtual System.Nullable<bool> ContinueOnFailure { get; set; } 

        /// <summary>Optional HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce
        /// (MR) tasks. Can contain Hive SerDes and UDFs.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jarFileUris")]
        public virtual System.Collections.Generic.IList<string> JarFileUris { get; set; } 

        /// <summary>Optional A mapping of property names and values, used to configure Hive. Properties that conflict
        /// with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop
        /// /conf-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("properties")]
        public virtual System.Collections.Generic.IDictionary<string,string> Properties { get; set; } 

        /// <summary>The HCFS URI of the script that contains Hive queries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("queryFileUri")]
        public virtual string QueryFileUri { get; set; } 

        /// <summary>A list of queries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("queryList")]
        public virtual QueryList QueryList { get; set; } 

        /// <summary>Optional Mapping of query variable names to values (equivalent to the Hive command: 'SET
        /// name="value";').</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("scriptVariables")]
        public virtual System.Collections.Generic.IDictionary<string,string> ScriptVariables { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The configuration settings for Google Compute Engine resources in an instance group, such as a master
    /// or worker group.</summary>
    public class InstanceGroupConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional The Google Compute Engine accelerator configuration for these instances.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accelerators")]
        public virtual System.Collections.Generic.IList<AcceleratorConfiguration> Accelerators { get; set; } 

        /// <summary>Disk option configuration settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("diskConfiguration")]
        public virtual DiskConfiguration DiskConfiguration { get; set; } 

        /// <summary>Output-only The Google Compute Engine image resource used for cluster instances. Inferred from
        /// SoftwareConfiguration.image_version. Example: "compute.googleapis.com/projects/debian-cloud /global/images
        /// /backports-debian-7-wheezy-v20140904".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("imageUri")]
        public virtual string ImageUri { get; set; } 

        /// <summary>The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the
        /// instance group if not set by user (recommended practice is to let Dataproc derive the name).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceNames")]
        public virtual System.Collections.Generic.IList<string> InstanceNames { get; set; } 

        /// <summary>Specifies that this instance group contains Preemptible Instances.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("isPreemptible")]
        public virtual System.Nullable<bool> IsPreemptible { get; set; } 

        /// <summary>The Google Compute Engine machine type used for cluster instances. Example:
        /// "compute.googleapis.com/projects/project_id /zones/us-east1-a/machineTypes/n1-standard-2".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("machineTypeUri")]
        public virtual string MachineTypeUri { get; set; } 

        /// <summary>Output-only The configuration for Google Compute Engine Instance Group Manager that manages this
        /// group. This is only used for preemptible instance groups.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("managedGroupConfiguration")]
        public virtual ManagedGroupConfiguration ManagedGroupConfiguration { get; set; } 

        /// <summary>The number of VM instances in the instance group. For master instance groups, must be set to
        /// 1.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("numInstances")]
        public virtual System.Nullable<int> NumInstances { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Cloud Dataproc job resource.</summary>
    public class Job : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Output-only If present, the location of miscellaneous control files which may be used as part of
        /// job setup and handling. If not present, control files may be placed in the same location as
        /// driver_output_uri.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("driverControlFilesUri")]
        public virtual string DriverControlFilesUri { get; set; } 

        /// <summary>Output-only A URI pointing to the location of the stdin of the job's driver program, only set if
        /// the job is interactive.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("driverInputResourceUri")]
        public virtual string DriverInputResourceUri { get; set; } 

        /// <summary>Output-only A URI pointing to the location of the stdout of the job's driver program.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("driverOutputResourceUri")]
        public virtual string DriverOutputResourceUri { get; set; } 

        /// <summary>Output-only A URI pointing to the location of the mixed stdout/stderr of the job's driver
        /// programfor example, gs://sysbucket123/foo-cluster/jobid-123/driver/output.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("driverOutputUri")]
        public virtual string DriverOutputUri { get; set; } 

        /// <summary>Job is a Hadoop job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("hadoopJob")]
        public virtual HadoopJob HadoopJob { get; set; } 

        /// <summary>Job is a Hive job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("hiveJob")]
        public virtual HiveJob HiveJob { get; set; } 

        /// <summary>Optional If set to true, then the driver's stdin will be kept open and driver_input_uri will be set
        /// to provide a path at which additional input can be sent to the driver.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("interactive")]
        public virtual System.Nullable<bool> Interactive { get; set; } 

        /// <summary>Optional The labels to associate with this job.Label keys must be between 1 and 63 characters long,
        /// and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62}Label values must be between 1 and
        /// 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}\p{N}_-{0,63}No more
        /// than 64 labels can be associated with a given job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IDictionary<string,string> Labels { get; set; } 

        /// <summary>Job is a Pig job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pigJob")]
        public virtual PigJob PigJob { get; set; } 

        /// <summary>Required Job information, including how, when, and where to run the job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("placement")]
        public virtual JobPlacement Placement { get; set; } 

        /// <summary>Job is a Pyspark job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pysparkJob")]
        public virtual PySparkJob PysparkJob { get; set; } 

        /// <summary>Optional The fully-qualified reference to the job, which can be used to obtain the equivalent REST
        /// path of the job resource. If this property is not specified when a job is created, the server generates a
        /// job_id.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reference")]
        public virtual JobReference Reference { get; set; } 

        /// <summary>Optional Job scheduling configuration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("scheduling")]
        public virtual JobScheduling Scheduling { get; set; } 

        /// <summary>Job is a Spark job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sparkJob")]
        public virtual SparkJob SparkJob { get; set; } 

        /// <summary>Job is a SparkSql job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sparkSqlJob")]
        public virtual SparkSqlJob SparkSqlJob { get; set; } 

        /// <summary>Output-only The job status. Additional application-specific status information may be contained in
        /// the type_job and yarn_applications fields.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual JobStatus Status { get; set; } 

        /// <summary>Output-only The previous job status.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("statusHistory")]
        public virtual System.Collections.Generic.IList<JobStatus> StatusHistory { get; set; } 

        /// <summary>Output-only The email address of the user submitting the job. For jobs submitted on the cluster,
        /// the address is username@hostname.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("submittedBy")]
        public virtual string SubmittedBy { get; set; } 

        /// <summary>Output-only The collection of Yarn applications spun up by this job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("yarnApplications")]
        public virtual System.Collections.Generic.IList<YarnApplication> YarnApplications { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Cloud Dataproc job configuration.</summary>
    public class JobPlacement : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Required The name of the cluster where the job will be submitted.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterName")]
        public virtual string ClusterName { get; set; } 

        /// <summary>Output-only A cluster UUID generated by the Dataproc service when the job is submitted.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterUuid")]
        public virtual string ClusterUuid { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Encapsulates the full scoping used to reference a job.</summary>
    public class JobReference : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Required The job ID, which must be unique within the project. The job ID is generated by the server
        /// upon job submission or provided by the user as a means to perform retries without creating duplicate jobs.
        /// The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum
        /// length is 100 characters.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jobId")]
        public virtual string JobId { get; set; } 

        /// <summary>Required The ID of the Google Cloud Platform project that the job belongs to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Job scheduling options.Beta Feature: These options are available for testing purposes only. They may be
    /// changed before final release.</summary>
    public class JobScheduling : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional Maximum number of times per hour a driver may be restarted as a result of driver
        /// terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver
        /// exits with non-zero code 4 times within 10 minute window.Maximum value is 10.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxFailuresPerHour")]
        public virtual System.Nullable<int> MaxFailuresPerHour { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Cloud Dataproc job status.</summary>
    public class JobStatus : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional Job state details, such as an error description if the state is ERROR.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual string Details { get; set; } 

        /// <summary>The time when the job completed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; } 

        /// <summary>The time of the job request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("insertTime")]
        public virtual object InsertTime { get; set; } 

        /// <summary>The time when the server started the job.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; } 

        /// <summary>Required A state message specifying the overall job state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; } 

        /// <summary>Output-only The time when this state was entered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stateStartTime")]
        public virtual object StateStartTime { get; set; } 

        /// <summary>Output-only Additional state information, which includes status reported by the agent.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("substate")]
        public virtual string Substate { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The list of all clusters in a project.</summary>
    public class ListClustersResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Output-only The clusters in the project.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusters")]
        public virtual System.Collections.Generic.IList<Cluster> Clusters { get; set; } 

        /// <summary>The standard List next-page token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A request to list jobs in a project.</summary>
    public class ListJobsRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional If set, the returned jobs list includes only jobs that were submitted to the named
        /// cluster.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterName")]
        public virtual string ClusterName { get; set; } 

        /// <summary>Optional A filter constraining which jobs to list. Valid filters contain job state and label terms
        /// such as: labels.key1 = val1 AND (labels.k2 = val2 OR labels.k3 = val3)</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("filter")]
        public virtual string Filter { get; set; } 

        /// <summary>Optional Specifies enumerated categories of jobs to list.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jobStateMatcher")]
        public virtual string JobStateMatcher { get; set; } 

        /// <summary>Optional The number of results to return in each response.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pageSize")]
        public virtual System.Nullable<int> PageSize { get; set; } 

        /// <summary>Optional The page token, returned by a previous call, to request the next page of
        /// results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pageToken")]
        public virtual string PageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A response to a request to list jobs in a project.</summary>
    public class ListJobsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Output-only Jobs list.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jobs")]
        public virtual System.Collections.Generic.IList<Job> Jobs { get; set; } 

        /// <summary>Optional This token is included in the response if there are more results to fetch. To fetch
        /// additional results, provide this value as the page_token in a subsequent ListJobsRequest.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response message for Operations.ListOperations.</summary>
    public class ListOperationsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The standard List next-page token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>A list of operations that match the specified filter in the request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operations")]
        public virtual System.Collections.Generic.IList<Operation> Operations { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The runtime logging configuration of the job.</summary>
    public class LoggingConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The per-package log levels for the driver. This may include 'root' package name to configure
        /// rootLogger. Examples:  com.google = FATAL, root = INFO, org.apache = DEBUG</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("driverLogLevels")]
        public virtual System.Collections.Generic.IDictionary<string,string> DriverLogLevels { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Specifies the resources used to actively manage an instance group.</summary>
    public class ManagedGroupConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Output-only The name of Instance Group Manager managing this group.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceGroupManagerName")]
        public virtual string InstanceGroupManagerName { get; set; } 

        /// <summary>Output-only The name of Instance Template used for Managed Instance Group.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceTemplateName")]
        public virtual string InstanceTemplateName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Specifies an executable to run on a fully configured node and a timeout period for executable
    /// completion.</summary>
    public class NodeInitializationAction : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Required Google Cloud Storage URI of executable file.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executableFile")]
        public virtual string ExecutableFile { get; set; } 

        /// <summary>Optional Amount of time executable has to complete. Default is 10 minutes. Cluster creation fails
        /// with an explanatory error message (the name of the executable that caused the error and the exceeded timeout
        /// period) if the executable is not completed at end of the timeout period.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionTimeout")]
        public virtual object ExecutionTimeout { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An asynchronous operation in a project that runs over a given cluster. Used to track the progress of a
    /// user request that is running asynchronously. Examples include creating a cluster, updating a cluster, and
    /// deleting a cluster.</summary>
    public class Operation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Indicates if the operation is done. If true, the operation is complete and the result is available.
        /// If false, the operation is still in progress.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("done")]
        public virtual System.Nullable<bool> Done { get; set; } 

        /// <summary>The error result of the operation in case of failure.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual Status Error { get; set; } 

        /// <summary>Service-specific metadata associated with the operation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("metadata")]
        public virtual System.Collections.Generic.IDictionary<string,object> Metadata { get; set; } 

        /// <summary>The name of the operation resource, in the format
        /// projects/project_id/operations/operation_id</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The operation response. If the called method returns no data on success, the response is
        /// google.protobuf.Empty. If the called method is Get,Create or Update, the response is the resource. For all
        /// other methods, the response type is a concatenation of the method name and "Response". For example, if the
        /// called method is TakeSnapshot(), the response type is TakeSnapshotResponse.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("response")]
        public virtual System.Collections.Generic.IDictionary<string,object> Response { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Metadata describing the operation.</summary>
    public class OperationMetadata : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Name of the cluster for the operation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterName")]
        public virtual string ClusterName { get; set; } 

        /// <summary>Cluster UUId for the operation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clusterUuid")]
        public virtual string ClusterUuid { get; set; } 

        /// <summary>Output-only Short description of operation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; } 

        /// <summary>A message containing any operation metadata details.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual string Details { get; set; } 

        /// <summary>The time that the operation completed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; } 

        /// <summary>A message containing the detailed operation state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("innerState")]
        public virtual string InnerState { get; set; } 

        /// <summary>The time that the operation was requested.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("insertTime")]
        public virtual object InsertTime { get; set; } 

        /// <summary>Output-only The operation type.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationType")]
        public virtual string OperationType { get; set; } 

        /// <summary>The time that the operation was started by the server.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; } 

        /// <summary>A message containing the operation state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; } 

        /// <summary>Output-only Current operation status.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual OperationStatus Status { get; set; } 

        /// <summary>Output-only Previous operation status.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("statusHistory")]
        public virtual System.Collections.Generic.IList<OperationStatus> StatusHistory { get; set; } 

        /// <summary>Output-only Errors encountered during operation execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("warnings")]
        public virtual System.Collections.Generic.IList<string> Warnings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The status of the operation.</summary>
    public class OperationStatus : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A message containing any operation metadata details.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual string Details { get; set; } 

        /// <summary>A message containing the detailed operation state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("innerState")]
        public virtual string InnerState { get; set; } 

        /// <summary>A message containing the operation state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; } 

        /// <summary>The time this state was entered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("stateStartTime")]
        public virtual object StateStartTime { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Cloud Dataproc job for running Pig queries on YARN.</summary>
    public class PigJob : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional Whether to continue executing queries if a query fails. The default value is false.
        /// Setting to true can be useful when executing independent parallel queries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("continueOnFailure")]
        public virtual System.Nullable<bool> ContinueOnFailure { get; set; } 

        /// <summary>Optional HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR)
        /// tasks. Can contain Pig UDFs.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jarFileUris")]
        public virtual System.Collections.Generic.IList<string> JarFileUris { get; set; } 

        /// <summary>Optional The runtime log configuration for job execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("loggingConfiguration")]
        public virtual LoggingConfiguration LoggingConfiguration { get; set; } 

        /// <summary>Optional A mapping of property names to values, used to configure Pig. Properties that conflict
        /// with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop
        /// /conf-site.xml, /etc/pig/conf/pig.properties, and classes in user code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("properties")]
        public virtual System.Collections.Generic.IDictionary<string,string> Properties { get; set; } 

        /// <summary>The HCFS URI of the script that contains the Pig queries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("queryFileUri")]
        public virtual string QueryFileUri { get; set; } 

        /// <summary>A list of queries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("queryList")]
        public virtual QueryList QueryList { get; set; } 

        /// <summary>Optional Mapping of query variable names to values (equivalent to the Pig command:
        /// "name=value").</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("scriptVariables")]
        public virtual System.Collections.Generic.IDictionary<string,string> ScriptVariables { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Cloud Dataproc job for running PySpark applications on YARN.</summary>
    public class PySparkJob : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz,
        /// .tgz, and .zip.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("archiveUris")]
        public virtual System.Collections.Generic.IList<string> ArchiveUris { get; set; } 

        /// <summary>Optional The arguments to pass to the driver. Do not include arguments, such as --conf, that can be
        /// set as job properties, since a collision may occur that causes an incorrect job submission.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("args")]
        public virtual System.Collections.Generic.IList<string> Args { get; set; } 

        /// <summary>Optional HCFS URIs of files to be copied to the working directory of Python drivers and distributed
        /// tasks. Useful for naively parallel tasks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileUris")]
        public virtual System.Collections.Generic.IList<string> FileUris { get; set; } 

        /// <summary>Optional HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jarFileUris")]
        public virtual System.Collections.Generic.IList<string> JarFileUris { get; set; } 

        /// <summary>Optional The runtime log configuration for job execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("loggingConfiguration")]
        public virtual LoggingConfiguration LoggingConfiguration { get; set; } 

        /// <summary>Required The Hadoop Compatible Filesystem (HCFS) URI of the main Python file to use as the driver.
        /// Must be a .py file.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mainPythonFileUri")]
        public virtual string MainPythonFileUri { get; set; } 

        /// <summary>Optional A mapping of property names to values, used to configure PySpark. Properties that conflict
        /// with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf
        /// /spark-defaults.conf and classes in user code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("properties")]
        public virtual System.Collections.Generic.IDictionary<string,string> Properties { get; set; } 

        /// <summary>Optional HCFS file URIs of Python files to pass to the PySpark framework. Supported file types:
        /// .py, .egg, and .zip.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pythonFileUris")]
        public virtual System.Collections.Generic.IList<string> PythonFileUris { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A list of queries to run on a cluster.</summary>
    public class QueryList : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Required The queries to execute. You do not need to terminate a query with a semicolon. Multiple
        /// queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud
        /// Dataproc API snippet that uses a QueryList to specify a HiveJob: "hiveJob": { "queryList": { "queries": [
        /// "query1", "query2", "query3;query4", ] } } </summary>
        [Newtonsoft.Json.JsonPropertyAttribute("queries")]
        public virtual System.Collections.Generic.IList<string> Queries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Specifies the selection and configuration of software inside the cluster.</summary>
    public class SoftwareConfiguration : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional The version of software inside the cluster. It must match the regular expression
        /// 0-9+.0-9+. If unspecified it will default to latest version.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("imageVersion")]
        public virtual string ImageVersion { get; set; } 

        /// <summary>Optional The properties to set on daemon configuration files.Property keys are specified in
        /// "prefix:property" format, such as "core:fs.defaultFS". The following are supported prefixes and their
        /// mappings:  core - core-site.xml  hdfs - hdfs-site.xml  mapred - mapred-site.xml  yarn - yarn-site.xml  hive
        /// - hive-site.xml  pig - pig.properties  spark - spark-defaults.conf</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("properties")]
        public virtual System.Collections.Generic.IDictionary<string,string> Properties { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Cloud Dataproc job for running Spark applications on YARN.</summary>
    public class SparkJob : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks.
        /// Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("archiveUris")]
        public virtual System.Collections.Generic.IList<string> ArchiveUris { get; set; } 

        /// <summary>Optional The arguments to pass to the driver. Do not include arguments, such as --conf, that can be
        /// set as job properties, since a collision may occur that causes an incorrect job submission.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("args")]
        public virtual System.Collections.Generic.IList<string> Args { get; set; } 

        /// <summary>Optional HCFS URIs of files to be copied to the working directory of Spark drivers and distributed
        /// tasks. Useful for naively parallel tasks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileUris")]
        public virtual System.Collections.Generic.IList<string> FileUris { get; set; } 

        /// <summary>Optional HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jarFileUris")]
        public virtual System.Collections.Generic.IList<string> JarFileUris { get; set; } 

        /// <summary>Optional The runtime log configuration for job execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("loggingConfiguration")]
        public virtual LoggingConfiguration LoggingConfiguration { get; set; } 

        /// <summary>The name of the driver's main class. The jar file that contains the class must be in the default
        /// CLASSPATH or specified in jar_file_uris.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mainClass")]
        public virtual string MainClass { get; set; } 

        /// <summary>The Hadoop Compatible Filesystem (HCFS) URI of the jar file that contains the main class.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mainJarFileUri")]
        public virtual string MainJarFileUri { get; set; } 

        /// <summary>Optional A mapping of property names to values, used to configure Spark. Properties that conflict
        /// with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf
        /// /spark-defaults.conf and classes in user code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("properties")]
        public virtual System.Collections.Generic.IDictionary<string,string> Properties { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Cloud Dataproc job for running Spark SQL queries.</summary>
    public class SparkSqlJob : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optional HCFS URIs of jar files to be added to the Spark CLASSPATH.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("jarFileUris")]
        public virtual System.Collections.Generic.IList<string> JarFileUris { get; set; } 

        /// <summary>Optional The runtime log configuration for job execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("loggingConfiguration")]
        public virtual LoggingConfiguration LoggingConfiguration { get; set; } 

        /// <summary>Optional A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties
        /// that conflict with values set by the Cloud Dataproc API may be overwritten.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("properties")]
        public virtual System.Collections.Generic.IDictionary<string,string> Properties { get; set; } 

        /// <summary>The HCFS URI of the script that contains SQL queries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("queryFileUri")]
        public virtual string QueryFileUri { get; set; } 

        /// <summary>A list of queries.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("queryList")]
        public virtual QueryList QueryList { get; set; } 

        /// <summary>Optional Mapping of query variable names to values (equivalent to the Spark SQL command: SET
        /// name="value";).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("scriptVariables")]
        public virtual System.Collections.Generic.IDictionary<string,string> ScriptVariables { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The Status type defines a logical error model that is suitable for different programming environments,
    /// including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to
    /// be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status
    /// message contains three pieces of data: error code, error message, and error details. The error code should be an
    /// enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a
    /// developer-facing English message that helps developers understand and resolve the error. If a localized user-
    /// facing error message is needed, put the localized message in the error details or localize it in the client. The
    /// optional error details may contain arbitrary information about the error. There is a predefined set of error
    /// detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status
    /// message is the logical representation of the error model, but it is not necessarily the actual wire format. When
    /// the Status message is exposed in different client libraries and different wire protocols, it can be mapped
    /// differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some
    /// error codes in C.Other usesThe error model and the Status message can be used in a variety of environments,
    /// either with or without APIs, to provide a consistent developer experience across different environments.Example
    /// uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it
    /// may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow
    /// has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a
    /// client uses batch request and batch response, the Status message should be used directly inside batch response,
    /// one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results
    /// in its response, the status of those operations should be represented directly using the Status message.
    /// Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping
    /// needed for security/privacy reasons.</summary>
    public class Status : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status code, which should be an enum value of google.rpc.Code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("code")]
        public virtual System.Nullable<int> Code { get; set; } 

        /// <summary>A list of messages that carry the error details. There will be a common set of message types for
        /// APIs to use.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual System.Collections.Generic.IList<System.Collections.Generic.IDictionary<string,object>> Details { get; set; } 

        /// <summary>A developer-facing error message, which should be in English. Any user-facing error message should
        /// be localized and sent in the google.rpc.Status.details field, or localized by the client.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("message")]
        public virtual string Message { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A job submission request.</summary>
    public class SubmitJobRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Required The job resource.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("job")]
        public virtual Job Job { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A YARN application created by a job. Application information is a subset of
    /// org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.</summary>
    public class YarnApplication : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Required The application name.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Required The numerical progress of the application, from 1 to 100.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("progress")]
        public virtual System.Nullable<float> Progress { get; set; } 

        /// <summary>Required The application state.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; } 

        /// <summary>Optional The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides
        /// application-specific information. The URL uses the internal hostname, and requires a proxy server for
        /// resolution and, possibly, access.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("trackingUrl")]
        public virtual string TrackingUrl { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }
}
